package com.huitone.gddw.dao.worktable.paramconfigmanage;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.huitone.gddw.dao.entity.SvrRouteRule;
import com.huitone.gddw.service.dto.SvrRouteRuleDTO;

public interface ISvrRouteRuleDao {
	/**
	 * 删除记录
	 * @param ruleId
	 * @return
	 */
    int deleteByPrimaryKey(String ruleId);
    
    /**
     * 删除路由通道信息
     * @param svrNode
     * @return
     */
    int deleteByServiceCode(String serviceCode);

    int insert(SvrRouteRule record);

    /**
     * 新增记录
     * @param record
     * @return
     */
    int insertSelective(SvrRouteRule record);
    
    /**
     * 批量保存
     * @param list
     * @return
     */
    int insertBatch(List<SvrRouteRule> list);

    /**
     * 根据主键查询记录
     * @param ruleId
     * @return
     */
    SvrRouteRule selectByPrimaryKey(String ruleId);

    /**
     * 修改记录（为空不修改）
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(SvrRouteRule record);

    /**
     * 修改记录（为空也修改）
     * @param record
     * @return
     */
    int updateByPrimaryKey(SvrRouteRule record);
    
    /**
     * 根据通道获取
     * @param map
     * @return List<SvrRouteRule> 
     */
    List<SvrRouteRule> getByGateLinkId(String gateLinkId);
    /**
     * 页面列表查询
     * @param map
     * @return List<SvrRouteRuleDTO> 
     */
    List<SvrRouteRuleDTO> selectPage(Map<String,Object> map);
    /**
     * 查询总记录数
     * @param map
     * @return
     */
    int selectCount(Map<String,Object> map);
    /**
     * 根据查询参数，返回记录
     * @param map
     * @return List<SvrRouteRuleDTO>
     */
    List<SvrRouteRuleDTO> getRecord(Map<String,Object> map);
    
    /**
     * 根据业务类型查询已被设置路由的通道 
     * @param serviceCode
     * @return gateLinkId
     */
    List<String> getGateIdByService(String serviceCode);

    /**
     * 根据短信类型查询路由的通道
     * @return
     */
    List<SvrRouteRule> getServiceCode(@Param(value="serviceCode") String serviceCode,@Param(value="gateLinkId") String gateLinkId);
    
    /**
     * 查询与通道对应的业务端
     * @param gateLinkId
     * @return
     */
    List<String> selectServiceCode(Map<String,Object> map);
    
    int selectCountByServiceCode(Map<String, Object> map);
    
    /**
     * 根据业务端和优先级获取通道
     * @param svrNode
     * @param routeLevel
     * @return
     */
    List<SvrRouteRuleDTO> selectGateByServiceCode(@Param(value="serviceCode") String serviceCode, @Param(value="routeLevel") String routeLevel);
    
    /**
     * 获取与业务端对应的通道
     * @param map
     * @return
     */
    List<String> getGateLinkId(Map<String,Object> map);
    
    int selectCountByGateLinkId(Map<String, Object> map);
    
    /**
     * 根据通道获取路由通道信息
     * @param gateLinkId
     * @param routeLevel
     * @return
     */
    List<SvrRouteRuleDTO> selectServiceCodeByGate(@Param(value="gateLinkId") String gateLinkId, @Param(value="routeLevel") String routeLevel);
    
    /**
     * 根据通道删除路由通道信息
     * @param gateLinkId
     * @return
     */
    int deleteByGate(String gateLinkId);
}